C++代码格式规范引导(三):命名空间

您所在的位置:网站首页 asenumerable 命名空间 C++代码格式规范引导(三):命名空间

C++代码格式规范引导(三):命名空间

2023-08-22 21:33| 来源: 网络整理| 查看: 265

博客迁移已迁移到https://www.guyuemeng.com

命名空间

C++语言中的作用域管理方法,大致可以分为两类:物理作用域、逻辑作用域。物理作用域,从磁盘分布、内存管理的角度分离作用域,如工程文件管理文件列表、代码分目录、代码分文件、拆分类、多数括号(大、小括号);逻辑作用域,指的是只修改作用域的标记符,不会改变物理磁盘分布、内存分配或对象生命周期,如命名空间、public/protected/private等。逻辑作用域的最大特点是自由,突破物理作用域限制,制定新的逻辑作用域规则,如public/protected/private可在类中的任意位置、任意多次出现,改变其中任意成员、方法的可见域;命名空间可跨文件管理,亦可在单文件内拆出多个可视域。 命名空间管理可分为定义命名空间(namespace)、引用命名空间(using namespace/using)两块内容。

定义命名空间

作为逻辑作用域,命名空间具有很大的自由度,若不加以限制将很容易造成混乱,其本质作用是代码隔离,防止污染,基本原则如下:

命名空间全路径尽量保证在1级到4级之间,不允许使用匿名空间,不建议过多的命名空间层级命名空间层级数越少,其内提供的能力应越通用,层级数越多,其业务耦合性、特化效果应越强同父命名空间路径下,子命名空间抽象层级应保持一致命名空间全路径不应跨工程同一工程下,命名空间全路径应保持一致多级命名空间应置于一行命名空间名称需要与前后的{保持一个空格的间距多级命名空间结束时,置于一行,}之间无需存在空格1级命名空间具有非常大的作用域范围,只应用于C++基础能力的扩充、第三方C++标准库的封装、产品底层框架的封装等基础能力。 引用命名空间

引用命名空间说起来算是一种偷懒的行为,避免在代码中写很长的命名空间路径,但在局部范围内破坏了命名空间的隔离效用,需谨慎对待。其基本原则如下:

头文件中严禁引用命名空间命名空间全路径只有1级时,严禁引用此命名空间,如std/boost等某一命名空间中对象只有1-2个被引用,且对象使用次数也只有1-2次时,不引用命名空间某一命名空间中对象只有1-2个被引用时,使用using 命名空间全路径::对象名;某一命名空间中对象被大量引用时,使用using namespace 命名空间全路径;using 命名空间全路径::对象名;与using namespace 命名空间全路径;不可出现命名空间全路径相同的场景using namespace 命名空间全路径;同一文件中,不应出现路径嵌套适当情况下,不引用命名空间全路径,保留最后一级命名空间不引用,可提高对象隔离效果using namespace 命名空间全路径;均在using 命名空间全路径::对象名;之前命名空间全路径using顺序同头文件引用顺序using之间不留空行,与命名空间定义namespace之间不留空行 命名空间规范示例 namespace FistLevel { namespace SecondLevel { namespace ThirdLevel { using namespace A::B::C; using namespace A1::B1; using A2::B2::B2Object; A::Object getObject(std::string); }}}


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3